“It takes 20 years to build a reputation and a few minutes of cyber-incident to ruin it.” ― Stephane Nappo.
看到一個指令,除了上網翻文檔以外,也可以用指令查看內建的文檔:
$ man nc
# 如果使用自己的環境沒有這個命令的話,可以去找你的操作系統對應的安裝方式
可以看到有非常多詳細的參數與介紹(q退出, j往下, k往上)。
依照給定用法使用:
$ nc jupiter.challenges.picoctf.org 64287
You are on your way to becoming the net cat master
picoCTF{nEtCat_Mast3ry_284be8f7}
使用nc連線後,發現輸出一堆數字,按Ctrl+C中斷,此時我們可以看一下Hints,提到了ASCII:
ASCII表是電腦把數字與字元做一個映射關係(65對應到A, 98對應到b)。
簡單寫一個Python或C++程式將數字轉換成對應的字元即可:
(nano convert.py or vim convert.py (也可以先用touch convert.py創建檔案再用vim或nano開啟,vi或vim通常Unix系統會自帶,nano則不一定)
while True:
n = int(input())
print(chr(n), end='') # end默認會插入'\n'換行,透過指定end不換行,讓輸出更好閱讀
#include <iostream>
int main()
{
int num;
while (std::cin >> num)
{
std::cout << char(num);
}
return 0;
}
還記得昨天我們提到的 pipeline管道符 “|”嗎?
# 將nc mercury.picoctf.net 35562 連線後的結果 當成 python convert.py的輸入
$ nc mercury.picoctf.net 35652 | python convert.py
# C++要先用 g++ convert.cpp -o convert 編譯成可執行檔convert
$ nc mercury.picoctf.net 35652 | ./convert
picoCTF{g00d_k1tty!_n1c3_k1tty!_9b3b7392}
(延伸思考: Mastery的e為什麼被打成3、good被打成g00d?) https://zh.wikipedia.org/zh-tw/Leet)